const db = require('../db/index')
const bcrypt = require('bcryptjs')

// 封装数据库查询函数
function queryDatabase(sql, params, callback) {
    db.query(sql, params, function (err, results) {
        if (err) {
            return callback(err, null);
        }
        callback(null, results);
    });
}

// 获取用户信息
exports.getUserInfo = (req, res) => {
    const userInfoSql = `select * from user_basic where id=?`;
    const statusSql = `select * from interview_status where phone_number=?`;

    // 查询用户基本信息
    queryDatabase(userInfoSql, req.user.id, (err, userInfoResults) => {

        console.log(req.user);
        if (err) {
            return res.cc(err);
        }

        if (userInfoResults.length !== 1) {
            return res.cc('获取用户信息失败！');
        }

        const userInfo = userInfoResults[0];
        delete userInfo.password;
        delete userInfo.user_basic_ID;
        // 查询用户状态信息
        queryDatabase(statusSql, req.user.phone_number, (err, statusResults) => {
            if (err) {
                return res.cc(err);
            }

            if (statusResults.length !== 1) {
                const userInfoObj = { ...userInfo };
                res.send({
                    status: 0,
                    message: '获取用户信息成功！未报名',
                    data: userInfoObj,
                });
            } else {


                const statusInfo = statusResults[0];
                delete statusInfo.id;

                // 将用户基本信息和状态信息合并后响应给客户端
                const userInfoObj = { ...userInfo, ...statusInfo };
                res.send({
                    status: 0,
                    message: '获取用户信息成功！已报名',
                    data: userInfoObj,
                });
            }


        });
    });
};

// 更新用户信息
exports.editUserInfo = (req, res) => {
    const oldUserInfo = req.user;
    const newUserInfo = req.body;

    const sql = 'UPDATE user_basic SET ? WHERE id = ?';
    delete newUserInfo.user_clusters
    db.query(sql, [newUserInfo, oldUserInfo.id], (err, result) => {
        if (err) {
            return res.cc(err);
        }

        if (result.affectedRows !== 1) {
            return res.cc('更新用户信息失败！');
        }

        res.send({
            status: 0,
            message: '更新用户信息成功！',
        });
    });
};

// 重置密码的处理函数
exports.updatePassword = (req, res) => {
    console.log(req.body.password);
    if (req.body.password !== req.body.repassword)
        return res.cc('两次密码不一致！')
    // console.log(req.user.id);
    // 查询用户是否存在
    const sql = `select * from user_basic where id=?`
    db.query(sql, req.user.id, (err, results) => {
        if (err) return res.cc(err)
        // 检查指定 id 的用户是否存在
        if (results.length !== 1) return res.cc('用户不存在！')
        // 根据id更新密码
        const sqlupdata = `update user_basic set password=? where id=?`
        const newPwd = bcrypt.hashSync(req.body.password, 10)
        db.query(sqlupdata, [newPwd, req.user.id], (err, results) => {
            if (err) return res.cc(err)
            // 影响行数不等于 1
            // if (results.affectedRows !== 1) return res.cc('更新密码失败！')
            if (results.affectedRows !== 1) return res.send('更新密码失败！')
            // 更新密码成功
            res.send({
                status: 0,
                message: '更新密码成功！',
            });
        })

    })
}

